#ifndef GUIDEASYSTEM_H
#define GUIDEASYSTEM_H
#include <package.h>
#include <myGraph.h>
#include <QDebug>
#include <QList>
#include <QString>
#include "package.h"
#define bikeSpeed  2.8
#define walkSpeed  0.83

typedef struct matching
{
    /**
     * @brief matchingLocationNum 各个匹配地点的编号
     */
    int matchingLocationNum;

    /**
     * @brief matchingLocation  各个匹配地点的名称
     */
    QString matchingLocation;

    /**
     * @brief matchingTimeSpent 到各个匹配地点所需的时间
     */
    double matchingTimeSpent;

    /**
     * @brief matchingDistance  到各个匹配地点所需点的路程
     */
    double matchingDistance;

    /**
     * @brief matchingRouteNum  到达某一匹配地点的路线点编号
     */
    QList<int> matchingRouteNum;

    /**
     * @brief matchingRoute     到达某一匹配地点的路线
     */
    QList<QString> matchingRoute;

    /**
     * @brief matchingSectionDistance      到达某一匹配地点的导航路线中各路段的长度
     */
    QList<double> matchingSectionDistance;

    /**
     * @brief matchingSectionTimeSpent      到达某一匹配地点的导航路线中各路段的耗时
     */
    QList<double> matchingSectionTimeSpent;
} matching;

class guideSystem
{
public:
    int debugNum = 0;

    package *pkg;
    myGraph *map;

    QList<matching> matchingInf;

    guideSystem(package *pkg);
    ~guideSystem();
    /**
     * @brief findNavigationRoute   寻找导航路线函数，利用迪杰斯特拉算法查找由起点到终点的路线
     * @param Pkg  指向主函数package的指针
     */
    void findNavigationRoute(package* pkg);

    void AddCurrentPoint(package* pkg);

    /**
     * @brief findMatchingLocation    查找周边函数，查找地图距当前位置小于1公里的点，并给出导航信息
     * @param Pkg  指向主函数package的指针
     */
    void findMatchingLocation(package* pkg);


};

#endif // GUIDEASYSTEM_H
